<!doctype html>
<meta name=viewport content="width=device-width, initial-scale=1">
<title>PHP and 1C</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<link rel="stylesheet" href="./lib/codemirror.css">
<script src="./lib/codemirror.js"></script>
<script src="./lib/1c.js"></script>
<link rel="stylesheet" href="./lib/1c.css">
<body>
  <h4>Выбор языка для 1С</h4>
  <input type="radio" name="lang" value="ru" checked onclick="changeLang('ru')" > Русский<br>
  <input type="radio" name="lang" value="en" onclick="changeLang('en')" > Английский<br>
  <!-- <input type="radio" name="lang" value="ua"> Украинский<br><br> -->
    
  <h4>Открытый проект преобразования кода 1С в PHP. <br><a href='https://github.com/sikuda/php1c.ru'>https://github.com/sikuda/php1c.ru</a></h4>
  <p>Хотите попробовать выполнить или преобразовать Ваш кусочек кода 1С? Вставьте его в первое поле и нажмите кнопку Преобразовать в PHP для преобразования этого кода.</p>
  <div width="100%">
    <textarea id="code" name="code" width="50%"></textarea>
  </div>
  <div align="center">
    <input type="button" onclick="doExecute()"  value="Выполнить" style="font-size:1.5em"/>
  </div> 
  <br>
  <div>
    <textarea name="codeResult" id="codeResult"></textarea>
  </div>  
  <div align="center">
    <input type="button" onclick="doCount()" value="Преобразовать в PHP" style="font-size:1.5em"/>
  </div>
  <br>
  <div>
    <textarea name="codePHP" id="codePHP"></textarea>
  </div>  

  <script type="text/javascript">
    codeArea = document.getElementById('code');

    var editor = CodeMirror.fromTextArea(codeArea, {
      lineNumbers: true,
      indentWithTabs: true,
      styleActiveLine: true,
      lineWrapping: true,
      smartIndent: true,
      electricChars:false,
      autofocus: true,
      indentUnit: 4,
      readOnly: false,
      highlightSelectionMatches: {showToken: /[0-9a-zA-Zа-яёА-ЯЁ&]/, annotateScrollbar: false},
      mode: "text/x-1c",
      theme: '1c'
    });

    //set
    //var content = 'Перем Результат; \nПроцедура Сложение( d, Я) \nРезультат = "4" + d + Я; \nКонецПроцедуры  \nСложение(1, 2);';
    //editor.setValue(content);
    changeLang();
    for (var i =0; i< editor.lineCount(); i++) { editor.indentLine(i); }
    editor.setSize("100%","30%");

    var editorResult = CodeMirror.fromTextArea(document.getElementById("codeResult"), {
      lineNumbers: true,
      matchBrackets: false,
      mode: "text",
      indentUnit: 4,
      indentWithTabs: true
    });
    editorResult.setSize("100%","30%");

    var editorPHP = CodeMirror.fromTextArea(document.getElementById("codePHP"), {
      lineNumbers: true,
      matchBrackets: false,
      mode: "application/x-httpd-php",
      indentUnit: 4,
      indentWithTabs: true
    });
    editorPHP.setSize("100%","30%");
    
    //run code from 1c
    function doExecute(){
      var context = editor.getValue();
      var xhttp = new XMLHttpRequest();
      xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
          var str = xhttp.responseText;
          editorResult.setValue(str);
        }
      }        
      var params = context;
      var lang = "ru"
      if( document.getElementsByName("lang")[1].checked) lang = "en";
      xhttp.open("POST", 'result1CCode.php?lang='+lang, true)
      xhttp.setRequestHeader('Content-Type', 'text-plain');
      xhttp.send(params);
    }
    //Make code php
    function doCount(){
      var context = editor.getValue();
      var xhttp2 = new XMLHttpRequest();
      xhttp2.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
          var str = xhttp2.responseText;
          editorPHP.setValue(str);
        }
      }        
      var params = context;
      var lang = "ru"
      if( document.getElementsByName("lang")[1].checked) lang = "en";
      xhttp2.open("POST", 'result1CCode.php?code=1&lang='+lang, true)
      xhttp2.setRequestHeader('Content-Type', 'text-plain')
      xhttp2.send(params);
    }

    function changeLang(lang) {
      if( lang == 'en') editor.setValue('var Result;\n\nProcedure fAdd(Y,z)\n  Return "4"+Y+z;\nEndProcedure\nResult = fAdd(5,7);');
      else editor.setValue('Перем Результат; \nПроцедура Сложение( d, Я) \nВозврат "4" + d + Я; \nКонецПроцедуры  \nРезультат=Сложение(1, 2);');
    }
  </script> 
 
</body>  

